package movTeclado;


import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.Timer;

import Entidades.NaveEnemiga;

/**
 * Clase menteGalaga
 * @author Jonathan Fritz - Santiago Salem - Kevin Schweitzer.
 */
public class menteGalaga extends mente implements ActionListener {

	private Timer timer;
	private boolean funcionando = true;


	/**
	 * Finaliza la ejecucion de la mente.
	 */
	public void fin(){
		super.fin();
		timer.stop();
		funcionando = false;
	}

	
	/**
	 * Realiza la accion de disparar.
	 * @param e, evento capturado.
	 */
	public void actionPerformed(ActionEvent e) {
	Point pos = nave.getLocation();
	 if(pos.y > 0)
		 juego.dispararEnemigo(nave.getLocation(),(NaveEnemiga)nave);
}



	/**
	 * Prepara la mente.
	 */
	public void preparar() {
		int mitad = this.juego.getFrameJuego().getWidth() / 2;
		this.nave.setLocation(mitad, 0-this.nave.getHeight());          
		timer =  new Timer (6000, this);
		timer.start();


	}


	/**
	 * Lleva a cabo el funcionamiento de la mente.
	 */
	public void run() {
		try {
			menteGalaga.sleep(50);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		Point pos = this.nave.getLocation();
		while( pos.y < 0 ) {
			try {
				menteGalaga.sleep(100);
				int v = pos.y + nave.getVelocidad();
				this.nave.setLocation( pos.x, v);
				pos = this.nave.getLocation();
				this.juego.getFrameJuego().repaint();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		boolean hacer = true;
		boolean agregue=false;
		while(hacer) {

			if(((pos.y >0 && pos.y< juego.getFrameJuego().getHeight()) && (pos.x >0 && pos.x< juego.getFrameJuego().getWidth())) && !agregue){
				juego.getNavesEnPantalla().add((NaveEnemiga)nave); //Siempre esta en pantalla
				agregue=true;
			}

			while( pos.x > 0 ) {
				try {
					menteGalaga.sleep(150);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				//Mueve nave
				int v = pos.x - nave.getVelocidad();
				this.nave.setLocation( v, pos.y);
				pos = this.nave.getLocation();
				this.juego.getFrameJuego().repaint();

			}

			while( pos.x < this.juego.getFrameJuego().getWidth() - this.nave.getWidth() ) {
				try {
					menteGalaga.sleep(150);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				//Mueve nave1
				int v = pos.x + nave.getVelocidad();
				this.nave.setLocation( v, pos.y);
				pos = this.nave.getLocation();
				this.juego.getFrameJuego().repaint();  




			}
		}
	}
}